home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks97 / WarriorsProgress.sit / Warrior’s Progress / source code / Source / Libraries / Windows / WindowPile.cp < prev    next >
Text File  |  1997-06-28  |  1KB  |  47 lines

  1. // WindowPile.cp
  2.  
  3. #ifndef WindowPile_h
  4. #include "WindowPile.h"
  5. #endif
  6.  
  7. WindowPile::WindowPile( Rectangle available, PointObject bestSize )
  8.   : pile( available ),
  9.      first( available.TopLeft() ),
  10.      finished( 0 )
  11.   {
  12.     PointObject minimum = bestSize + PointObject( 11, 35 );
  13.     
  14.     PointObject availableSize = available.Size();
  15.     
  16.     uint16 horizontal = ( availableSize.h > minimum.h )
  17.                                 ? availableSize.h / minimum.h
  18.                                 : 1;
  19.     
  20.     uint16 vertical = ( availableSize.v > minimum.v )
  21.                                 ? availableSize.v / minimum.v
  22.                                 : 1;
  23.     
  24.     offset.h = availableSize.h / horizontal;
  25.     offset.v = availableSize.v / vertical;
  26.     
  27.     stop.h = first.h + horizontal * offset.h;
  28.     stop.v = first.v + vertical * offset.v;
  29.     
  30.     pile.right = pile.left + offset.h - 3;
  31.     pile.bottom = pile.top + offset.v - 3;
  32.   }
  33.  
  34. void WindowPile::operator++()
  35.   {
  36.     Assert( Unfinished() );
  37.     
  38.     pile += PointObject( offset.h, 0 );
  39.     
  40.     if ( pile.left < stop.h )
  41.         return;
  42.     
  43.     pile += PointObject( first.h - pile.left, offset.v );
  44.     
  45.     finished = pile.top >= stop.v;
  46.   }
  47.